home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / dialupip / dialupip2.0.patch.1 < prev    next >
Internet Message Format  |  1991-02-11  |  8KB

  1. From dialupip-request@SH.CS.NET Mon Feb 11 10:02:41 1991
  2. Received: from sh.cs.net by uunet.uu.net (5.61/1.14) with SMTP 
  3.     id AA02294; Mon, 11 Feb 91 10:01:45 -0500
  4. Message-Id: <9102111501.AA02294@uunet.uu.net>
  5. Received: from sh.cs.net by SH.CS.NET id aa20448; 11 Feb 91 9:46 EST
  6. Date:     Mon, 11 Feb 91 14:40:48 GMT
  7. From: John Curran <jcurran@SH.CS.NET>
  8. To: dialupip@SH.CS.NET
  9. Subject:  Dialupip 2.0 patch #1
  10. Status: OR
  11.  
  12. Patch #1 to dialupip 2.0 changes the following routines:
  13.  
  14. dulib/log.c    Corrects output and possible address specification
  15.         error when using log formats with "%x" (hex) symbol.
  16.  
  17. dumisc/duioctl.c
  18.         Corrects output and possible address specification
  19.         error when setting SOFTTIMER.
  20.  
  21. diald/diald.c    Adds logging of packet source, destination, and protocol
  22.         causing line activation.
  23.         Improve readability of log messages.
  24.         Remove spurious "diald exiting" messages.
  25.  
  26. While dialupip will work fine without this patch, it's installation makes
  27. debugging dialupip services easier.
  28.  
  29. /John
  30.  
  31. ====== patch follows =====
  32. *** /tmp/,RCSt1a20184    Mon Feb 11 09:23:21 1991
  33. --- log.c    Fri Feb  8 15:49:43 1991
  34. ***************
  35. *** 99,105 ****
  36.           break;
  37.           case 'o': case 'c': case 'd': case 's': case 'u':
  38.           case 'e': case 'E': case 'f': case 'g': case 'G':
  39. !         case 'm':
  40.           done++;
  41.           /* FALLTHROUGH */
  42.           case ' ': case '+': case '-': case '.': case '#':
  43. --- 99,105 ----
  44.           break;
  45.           case 'o': case 'c': case 'd': case 's': case 'u':
  46.           case 'e': case 'E': case 'f': case 'g': case 'G':
  47. !         case 'm': case 'x':
  48.           done++;
  49.           /* FALLTHROUGH */
  50.           case ' ': case '+': case '-': case '.': case '#':
  51. *** /tmp/,RCSt1a20189    Mon Feb 11 09:23:22 1991
  52. --- duioctl.c    Fri Feb  8 15:54:20 1991
  53. ***************
  54. *** 175,181 ****
  55.           fatal("Can't SIOCSATIMEO");
  56.           d_log(DLOG_GENERAL, WHERE, "Set ATIMEO on \"%s\" to %d",
  57.           device, i);
  58. !         (void)printf("Set ATIMEO to %d\n", s);
  59.       }
  60.       else if (EQ(*argv, "SWTIMEO")) {
  61.           i = getnumber(argv[0], argv[1]);
  62. --- 175,181 ----
  63.           fatal("Can't SIOCSATIMEO");
  64.           d_log(DLOG_GENERAL, WHERE, "Set ATIMEO on \"%s\" to %d",
  65.           device, i);
  66. !         (void)printf("Set ATIMEO to %d\n", i);
  67.       }
  68.       else if (EQ(*argv, "SWTIMEO")) {
  69.           i = getnumber(argv[0], argv[1]);
  70. ***************
  71. *** 194,200 ****
  72.           if (ioctl(s, SIOCSSOFTTIMER, (caddr_t)&ifr) < 0)
  73.           fatal("Can't SIOCSSOFTTIMER");
  74.           d_log(DLOG_GENERAL, WHERE, "Set SOFTTIMER on \"%s\" to %d",
  75. !         i, device);
  76.           (void)printf("Set SOFTTIMER to %d\n", i);
  77.       }
  78.       else if (EQ(*argv, "ENABLECALL")) {
  79. --- 194,200 ----
  80.           if (ioctl(s, SIOCSSOFTTIMER, (caddr_t)&ifr) < 0)
  81.           fatal("Can't SIOCSSOFTTIMER");
  82.           d_log(DLOG_GENERAL, WHERE, "Set SOFTTIMER on \"%s\" to %d",
  83. !         device, i);
  84.           (void)printf("Set SOFTTIMER to %d\n", i);
  85.       }
  86.       else if (EQ(*argv, "ENABLECALL")) {
  87. *** /tmp/,RCSt1a20194    Mon Feb 11 09:23:24 1991
  88. --- diald.c    Fri Feb  8 15:56:28 1991
  89. ***************
  90. *** 84,102 ****
  91.       register REMOTE        *rp;
  92.       register struct du_pkt    *pkt;
  93.   {
  94. !     register int        i;
  95.       register TABLE        *tp;
  96.       struct timeval        tv;
  97.       struct tm            *tm;
  98.   
  99.       /* check protocol */
  100. !     i = pkt->du_ip.ip_p;
  101. !     if ((rp->Protocols[P_WORD(i)] & P_BIT(i)) == 0) {
  102. !     for (tp = ProtocolNames; tp->Name; tp++)
  103. !         if (i == tp->Protocol)
  104. !         break;
  105. !     d_log(DLOG_INFO, WHERE, "Bad protocol %s (%d)",
  106. !         tp ? tp->Name : "unknown");
  107.       return 0;
  108.       }
  109.   
  110. --- 84,106 ----
  111.       register REMOTE        *rp;
  112.       register struct du_pkt    *pkt;
  113.   {
  114. !     register int        pnum;
  115.       register TABLE        *tp;
  116. +     char             *pname;
  117. +     char            srcaddr[20];
  118.       struct timeval        tv;
  119.       struct tm            *tm;
  120.   
  121. +     pnum = pkt->du_ip.ip_p;
  122. +     for (tp = ProtocolNames; tp->Name; tp++)
  123. +         if (pnum == tp->Protocol)
  124. +         break;
  125. +     pname = tp ? tp->Name :  "unknown";
  126.       /* check protocol */
  127. !     if ((rp->Protocols[P_WORD(pnum)] & P_BIT(pnum)) == 0) {
  128. !     d_log(DLOG_INFO, WHERE, "Unauthorized protocol %s (%d)",
  129. !         pname, pnum);
  130.       return 0;
  131.       }
  132.   
  133. ***************
  134. *** 110,130 ****
  135.       return 0;
  136.       }
  137.       if ((rp->Times[tm->tm_wday] & (1L << tm->tm_hour)) == 0) {
  138. !     d_log(DLOG_INFO, WHERE, "Bad time to call");
  139.       return 0;
  140.       }
  141.   
  142.       /* Check addresses. */
  143.       if (rp->AllowCount && !hostinlist(rp->AllowTo, pkt->du_ip.ip_dst)) {
  144. !     d_log(DLOG_INFO, WHERE, "Bad destination address \"%s\"",
  145.           inet_ntoa(pkt->du_ip.ip_dst));
  146.       return 0;
  147.       }
  148.       if (rp->DisallowCount && hostinlist(rp->DisallowFrom, pkt->du_ip.ip_src)) {
  149. !     d_log(DLOG_INFO, WHERE, "Bad source address \"%s\"",
  150.           inet_ntoa(pkt->du_ip.ip_src));
  151.       return 0;
  152.       }
  153.   
  154.       /* o.k. to make call */
  155.       return 1;
  156. --- 114,138 ----
  157.       return 0;
  158.       }
  159.       if ((rp->Times[tm->tm_wday] & (1L << tm->tm_hour)) == 0) {
  160. !     d_log(DLOG_INFO, WHERE, "Unauthorized time of day");
  161.       return 0;
  162.       }
  163.   
  164.       /* Check addresses. */
  165.       if (rp->AllowCount && !hostinlist(rp->AllowTo, pkt->du_ip.ip_dst)) {
  166. !     d_log(DLOG_INFO, WHERE, "Unauthorized destination address \"%s\"",
  167.           inet_ntoa(pkt->du_ip.ip_dst));
  168.       return 0;
  169.       }
  170.       if (rp->DisallowCount && hostinlist(rp->DisallowFrom, pkt->du_ip.ip_src)) {
  171. !     d_log(DLOG_INFO, WHERE, "Unauthorized source address \"%s\"",
  172.           inet_ntoa(pkt->du_ip.ip_src));
  173.       return 0;
  174.       }
  175. +     (void)sprintf(srcaddr, "%s", inet_ntoa(pkt->du_ip.ip_src));
  176. +     d_log(DLOG_INFO, WHERE, "Authorized packet [%s -> %s], proto %s (%d)",
  177. +        srcaddr, inet_ntoa(pkt->du_ip.ip_dst), pname, pnum);
  178.   
  179.       /* o.k. to make call */
  180.       return 1;
  181. ***************
  182. *** 260,266 ****
  183.       if ((i = read(f, (char *)&pkt, sizeof pkt)) != sizeof pkt) {
  184.           if (errno != EINTR)
  185.           d_log(DLOG_GENERAL, WHERE,
  186. !             "Bad read (%d bytes) from \"%s\", %m",
  187.               i, DEVDIAL);
  188.           continue;
  189.       }
  190. --- 268,274 ----
  191.       if ((i = read(f, (char *)&pkt, sizeof pkt)) != sizeof pkt) {
  192.           if (errno != EINTR)
  193.           d_log(DLOG_GENERAL, WHERE,
  194. !             "failed read (%d bytes) from \"%s\", %m",
  195.               i, DEVDIAL);
  196.           continue;
  197.       }
  198. ***************
  199. *** 268,282 ****
  200.       /* Find config data for the address. */
  201.       (void)sprintf(buff, "%s%d", pkt.du_ifname, pkt.du_ifunit);
  202.       if ((rp = findconfig(buff)) == NULL) {
  203. !         d_log(DLOG_GENERAL, WHERE, "Address %s not configured",
  204. !         inet_ntoa(pkt.du_sin.sin_addr));
  205.           continue;
  206.       }
  207.   
  208.       /* Is this packet is authorized? */
  209.       if (pkt.du_checkit && !authorized(rp, &pkt)) {
  210. !         (void)sprintf(buff, "%s not authorized to reach %s",
  211. !             inet_ntoa(pkt.du_ip.ip_src), inet_ntoa(pkt.du_ip.ip_dst));
  212.           failcall(rp->Device, buff);
  213.           continue;
  214.       }
  215. --- 276,289 ----
  216.       /* Find config data for the address. */
  217.       (void)sprintf(buff, "%s%d", pkt.du_ifname, pkt.du_ifunit);
  218.       if ((rp = findconfig(buff)) == NULL) {
  219. !         d_log(DLOG_GENERAL, WHERE, "Interface \"%s\" not configured",
  220. !         buff);
  221.           continue;
  222.       }
  223.   
  224.       /* Is this packet is authorized? */
  225.       if (pkt.du_checkit && !authorized(rp, &pkt)) {
  226. !         (void)sprintf(buff, "access controls");
  227.           failcall(rp->Device, buff);
  228.           continue;
  229.       }
  230. ***************
  231. *** 289,295 ****
  232.       if ((i = fork()) == 0) {
  233.           (void)setpgrp(0, getpgrp(0));
  234.           makecall(rp);
  235. !         break;
  236.       }
  237.       if (i < 0)
  238.           d_log(DLOG_GENERAL, WHERE, "Can't fork dialing process, %m");
  239. --- 296,302 ----
  240.       if ((i = fork()) == 0) {
  241.           (void)setpgrp(0, getpgrp(0));
  242.           makecall(rp);
  243. !         exit(0);
  244.       }
  245.       if (i < 0)
  246.           d_log(DLOG_GENERAL, WHERE, "Can't fork dialing process, %m");
  247.  
  248.